package models

import (
	"go.mongodb.org/mongo-driver/mongo"
)

type Hobby struct {
	// 添加 json 标签，与前端发送的字段名（hobbyname、hobbylevel、hobbydescription）一致
	HobbyName        string `bson:"hobbyname" json:"hobbyname" validate:"required"`               // 对应 JSON 中的 hobbyname
	HobbyLevel       int    `bson:"hobbylevel" json:"hobbylevel" validate:"required,min=1,max=5"` // 对应 JSON 中的 hobbylevel
	HobbyDescription string `bson:"hobbydescription" json:"hobbydescription" validate:"required"` // 对应 JSON 中的 hobbydescription
}

type Person struct {
	// 添加 json 标签，与前端发送的字段名（name、age、hobby）一致
	Name  string  `bson:"name" json:"name" validate:"required"`        // 对应 JSON 中的 name
	Age   int     `bson:"age" json:"age" validate:"required"`          // 对应 JSON 中的 age
	Hobby []Hobby `bson:"hobby" json:"hobby" validate:"required,dive"` // 对应 JSON 中的 hobby
}

type PersonRepository struct {
	*BaseRepository[Person]
}

func NewPersonRepository(db *mongo.Database, collectionName string) *PersonRepository {
	return &PersonRepository{
		BaseRepository: NewBaseRepository[Person](db, collectionName),
	}
}
